import { Body, Controller, Get, HttpException, HttpStatus, Param, ParseIntPipe, Post, ValidationPipe } from '@nestjs/common';
import { AppService } from './app.service';
import { Ooo } from './ooo.dot';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}
  
  @Post('ooo')
  ooo(@Body(new ValidationPipe()) obj: Ooo) {
    console.log(obj);
  }

  @Get('hello/:a')
  hello(@Param('a',ParseIntPipe) a: string){
     console.log(a);
     return this.appService.getHello();
  }

/* 
exceptionFactory 是 ParseIntPipe 中的一个选项。
ParseIntPipe 是一个用于将输入参数解析为整数的管道。当输入无法被解析为整数时，可以通过 exceptionFactory 提供一个自定义的异常。

在给定的代码中，exceptionFactory 是一个函数，它接收一个消息（通常是错误消息）作为参数，并返回一个异常。
在这个例子中，如果解析失败，它将打印错误消息并抛出一个 HttpException 异常，其状态代码为 HttpStatus.NOT_IMPLEMENTED。
*/

  @Get('hello1/:a')
  hello1(@Param('a',new ParseIntPipe({
      //errorHttpStatusCode:HttpStatus.BAD_REQUEST,
      exceptionFactory: (msg) => {
        console.log(msg);
        throw new HttpException('xxx' + msg, HttpStatus.NOT_IMPLEMENTED)
      }
  })) a: string){
     console.log(a);
     return this.appService.getHello();
  }

}
